gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计。目前提供 C、Java 和 Go 语言版本,分别是:grpc, grpc-java, grpc-go. 其中 C 版本支持 C, C++, Node.js, Python, Ruby, Objective-C, PHP 和 C# 支持.
gRPC 基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。

protocol buffers
gRPC 默认使用 protocol buffers,这是 Google 开源的一套成熟的结构数据序列化机制(当然也可以使用其他数据格式如 JSON)。正如你将在下方例子里所看到的,你用 proto files 创建 gRPC 服务,用 protocol buffers 消息类型来定义方法参数和返回类型。

Install goprotobuf
# 安装protobuf库文件
go get -u -v github.com/golang/protobuf/proto
# 安装插件 goprotobuf
go get -u -v github.com/golang/protobuf/protoc-gen-go
# 安装 对应系统版本的 protoc 工具https://github.com/google/protobuf/releases
# windows
wget https://github.com/google/protobuf/releases/download/v3.6.0/protoc-3.6.0-win32.zip
# 生成go文件
protoc --go_out=. *.proto
Install gogoprotobuf [性能更快]
gogoprotobuf有两个插件可以使用
- protoc-gen-gogo:和protoc-gen-go生成的文件差不多,性能也几乎一样(稍微快一点点)
- protoc-gen-gofast:生成的文件更复杂,性能也更高(快5-7倍)
# 安装 gogoprotobuf 库文件
go get -u -v github.com/gogo/protobuf/proto
go get -u -v github.com/gogo/protobuf/gogoproto
# 安装插件 gogoprotobuf
# gogo
go get -u -v github.com/gogo/protobuf/protoc-gen-gogo
# gofast
go get -u -v github.com/gogo/protobuf/protoc-gen-gofast
# 安装 对应系统版本的 protoc 工具 https://github.com/google/protobuf/releases
# windows
wget https://github.com/google/protobuf/releases/download/v3.6.0/protoc-3.6.0-win32.zip
# 生成go文件
# gogo
protoc --gogo_out=. *.proto
# gofast
protoc --gofast_out=. *.proto
Install gRPC
# 安装gRPC 库
go get -u google.golang.org/grpc
# 基于 protobuf 生成 gRPC 代码
# 官方生成
protoc --go_out=plugins=grpc:. *.proto
# gogo 生成
protoc --gogo_out=plugins=grpc:. *.proto
# gofast 生成
protoc --gofast_out=plugins=grpc:. *.proto